import requests
import os
import string
import random
import datetime

# 配置参数
# FILE_PATH = "original_doc/old/wenan4.txt"  # 替换为你的本地文件路径
FILE_PATH = "original_doc/文案.txt"  # 替换为你的本地文件路径
API_KEY = "sk-8b6df4e170964def8f553aca15442d42"  # 替换为你的DeepSeek API密钥
MODEL_NAME = "deepseek-chat"  # 使用的模型名称
API_URL = "https://api.deepseek.com/v1/chat/completions"  # DeepSeek API端点


# def generate_random_filename(length=8, extension="txt"):
#     """生成随机小写字母文件名"""
#     # 生成随机小写字母
#     letters = string.ascii_lowercase
#     random_string = ''.join(random.choice(letters) for _ in range(length))
#     return f"{random_string}.{extension}"

def generate_random_filename(length=5, extension="txt"):
    """生成随机小写字母文件名，并添加日期目录层"""
    letters = string.ascii_lowercase
    random_string = ''.join(random.choice(letters) for _ in range(length))

    # 获取当天日期（格式：YYYYMMDD）
    today = datetime.datetime.now().strftime("%Y%m%d")
    dst_dir = "output\\"+today
    # 创建日期目录（如果不存在）
    if not os.path.exists(dst_dir):
        os.makedirs(dst_dir)

    # 生成以时分秒开头的字符串做文件名
    minute = datetime.datetime.now().strftime("%H%M%S")
    minute_random_string = minute+random_string

    # 返回包含日期目录的文件路径
    return os.path.join(dst_dir, f"{minute_random_string}.{extension}")


def read_file_content(file_path):
    """读取本地文件内容"""
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            return file.read()
    except FileNotFoundError:
        print(f"错误：文件未找到 - {file_path}")
        return None
    except Exception as e:
        print(f"读取文件时出错: {str(e)}")
        return None


def generate_content_with_deepseek(prompt, api_key, model=MODEL_NAME):
    """使用DeepSeek API生成内容"""
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    payload = {
        "model": model,
        "messages": [
            {"role": "user", "content": prompt}
        ],
        "temperature": 0.7,
        "max_tokens": 2000
    }

    try:
        response = requests.post(API_URL, json=payload, headers=headers)
        response.raise_for_status()  # 检查HTTP错误

        result = response.json()
        return result['choices'][0]['message']['content']

    except requests.exceptions.RequestException as e:
        print(f"API请求失败: {str(e)}")
    except KeyError:
        print("API响应格式错误")
    except Exception as e:
        print(f"处理时发生错误: {str(e)}")
    return None


def main():
    # 1. 读取文件内容
    file_content = read_file_content(FILE_PATH)
    if not file_content:
        return

    print(f"已成功读取文件内容，长度: {len(file_content)}字符")

    # 2. 构建提示词（根据需要修改）
    prompt = f"""
请根据以下文件内容执行任务。文件内容如下：
-------------------------
{file_content}
-------------------------
请严格基于用户上传的文件内容，执行以下操作：
    提取与整合： 仔细扫描全文，识别并提取所有直接反映或暗示现代人类普遍心声、深层焦虑、压力来源或精神困境的原文语句、段落或关键词。
    重组与连贯： 将提取出的内容片段进行逻辑性重组与排列组合，不必从前到后，任意位置提取即可，目标是形成一段语义连贯、情感递进的完整文案。可适当修改，允许进行必要的微调（如调整连接词、指代词、轻微语序变动）以确保句子通顺和段落流畅。
    聚焦共鸣点： 重组后的文案需强烈突出当代人在面对快速变化的世界、社会压力、个人价值实现、未来不确定性、人际关系疏离、技术冲击等方面的核心焦虑与内心真实呼声，力求引发读者深度共鸣。
    控制篇幅： 最终生成的文案需精炼，字数严格控制在 100-150字 之间。
    输出要求： 直接输出重组整合后的完整文案，无需额外解释或说明。
（模拟）文案示例（基于普遍认知）：
    “时间总是不够用，永远在追赶截止日期，像被无形的鞭子抽打。‘内卷’成了日常，努力似乎永无止境，却看不清上升的通道在哪里。科技日新月异，担心被算法替代，被时代抛弃的恐惧如影随形。社交网络上光鲜亮丽，对比之下更觉自身渺小与疲惫，真实的连接却日益稀薄。‘躺平’的念头时有闪现，又被责任与期待拉回赛道。未来充满变数，安全感成了奢侈品。我们渴望被理解、被看见真实的脆弱，渴望在高速运转的世界里找到喘息之地，确认自己的存在并非无意义的尘埃。这或许就是当下最深的无力与焦灼。” (约160字)
"""
# 请结合文件内容，从文件内容中摘出一段完整文案，可将文件内容重新排列组合，生成一段完整文案，保持原文，不要大幅修改，可适当修整保持句子连贯完整，文案要突出人类当前的心声和焦虑，找到共鸣，200字左右。
    # 3. 调用DeepSeek API
    print("正在调用DeepSeek API生成内容...")
    generated_content = generate_content_with_deepseek(prompt, API_KEY)

    # 4. 输出结果
    if generated_content:
        print("\n生成结果:")
        print("=" * 50)
        print(generated_content)
        print("=" * 50)

        # 生成随机文件名并保存结果
        # output_filename = generate_random_filename()
        # with open(output_filename, "w", encoding="utf-8") as f:
        #     f.write(generated_content)
        # print(f"结果已保存到 {output_filename}")

        # 生成随机文件名并保存结果
        output_filename = generate_random_filename()
        with open(output_filename, "w", encoding="utf-8") as f:
            f.write(generated_content)
        print(f"结果已保存到 {output_filename}")



if __name__ == "__main__":
    main()